package object04;

/**
 * 所有的类都默认继承Object
 * 由于equals方法比较两个对象的地址值没有任何意义
 * 因此我们通过比较两个对象中的属性值
 * 如果两个对象中的属性值完全相同,那么equals方法返回true
 * 如果两个对象中至少有一个属性不同,equals返回false
 * 例如:
 *   Person 如果两个Person对象的姓名和年龄均相同,那么equals方法返回true
 *   如果两个Person对象中至少有一个属性不同,equals返回false
 */
public class Person /*extends Object*/ {
    private String name;
    private int age;

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    @Override
    public boolean equals(Object obj) { //p1.equals(p2)
                                       //Object obj=p2
        /*
        * if(比较两个人对象姓名 && 比较两个人对象年龄){
        *    return true
        * }else{
        *    return false
        * }
        *
        */
        //由于obj是Object类型,在Object里面不存在age变量,age是Person(子类)特有变量
        //我们只能通过Person类型来调用
        Person p=(Person)obj;//强制向下转型

       /* boolean b1 = (this.age==p.age);//比较年龄
        boolean b2 = this.name.equals(p.name); //比较姓名 通过String类的equals()方法比较两个字符串内容*/

      /*  if (b1 && b2) {
            return true;
        } else {
            return false;
        }*/

      /*  if (this.age == p.age && this.name.equals(p.name)) {
            return true;
        } else {
            return false;
        }*/

        return this.age == p.age && this.name.equals(p.name);
    }
}
